﻿#pragma once

#include <stdlib.h>
#include <time.h>
#include <numeric>
#include <algorithm>
#include <iterator>
#include <stdexcept>
#include <vector>
#include <list>
#include <map>
#include <fstream>
#include <valarray>

#include <string>
#include <sstream>
#include <stdio.h>
#include <iostream>
#include <math.h>

#include <stdio.h>
#include <windows.h>
#include <process.h> /* _beginthread, _endthread */

#define EPSILON 1e-6f
#define PI 3.14159265358979323846f

typedef unsigned int uint;
typedef unsigned short ushort;
typedef unsigned long ulong;
typedef unsigned char uchar;

// структура для числа обусловленности
#pragma pack(push, 1)	// включаем выравневание
struct val_Id
{
	val_Id()
	: val(0),id(0){}

	bool operator < (const val_Id &_val) const
	{
		// Меньше, константный метод
		return (this->val < _val.val);
	}
	bool operator > (const val_Id &_val) const
	{
		// Больше, константный метод
		return (this->val > _val.val);
	}


	int		id;
	double val;
};
#pragma pack(pop) 

typedef float float2[2];

struct distFunk
{
	distFunk() : freq(0),val(0)
	{}
	double freq;
	double val;
};

//{безопасное удаление объектов через макросы}
#define SAFE_DEL(x)		if(x!=NULL){delete x; x=NULL;}
#define SAFE_DEL_ARRAY(x)	if(x!=NULL){delete [] x; x=NULL;}

using namespace std;